
var store = new Ext.data.JsonStore({
	root : 'rows',
	totalProperty : 'total',
	idProperty : 'programid',
	fields : [ {
		name : 'programid',
		type : 'int'
	}, 'programname', 'resource', 'param' ],
	url : form.contextpath + '/data/load/programlist.do'
});
var grid = new Ext.grid.GridPanel({
	region : 'west',
	title : '功能列表',
	store : store,
	split : true,
	width : 330,
	minSize : 75,
	maxSize : 400,
	trackMouseOver : false,
	loadMask : true,
	columns : [ {
		id : 'programid',
		header : "功能Id",
		dataIndex : 'programid',
		width : 100,
		hidden : true
	}, {
		header : "功能名称",
		dataIndex : 'programname',
		width : 220,
		sortable : false
	} ],
	sm : new Ext.grid.RowSelectionModel({
		singleSelect : true,
		listeners : {
			rowselect : function(sm, row, rec) {
				pstore.load({
					params : {
						programid : rec.get("programid")
					}
				});
			}
		}
	}),
	bbar : new Ext.PagingToolbar({
		pageSize : 25,
		store : store,
		displayInfo : true,
		displayMsg : '显示记录 {0} - {1} / {2}',
		emptyMsg : "没有要显示的记录"
	})
});

var pstore = new Ext.data.JsonStore({
	root : 'rows',
	totalProperty : 'total',
	idProperty : 'roleid',
	fields : [ {
		name : 'roleid',
		type : 'int'
	}, {
		name : 'programid',
		type : 'int'
	}, 'rolename', {
		name : 'view',
		type : 'bool'
	}, {
		name : 'add',
		type : 'bool'
	}, {
		name : 'edit',
		type : 'bool'
	}, {
		name : 'del',
		type : 'bool'
	} ],
	url : form.contextpath + '/function/permission.do'
});

var pgrid = new Ext.grid.GridPanel({
	region : 'center',
	title : '权限列表',
	store : pstore,
	split : true,
	width : 200,
	minSize : 75,
	maxSize : 400,
	trackMouseOver : false,
	loadMask : true,
	clicksToEdit : 1,
	cm : new Ext.grid.ColumnModel({
		defaults : {
			sortable : false
		},
		columns : [ {
			id : 'roleid',
			header : "角色Id",
			dataIndex : 'roleid',
			width : 100,
			hidden : true
		}, {
			header : "功能Id",
			dataIndex : 'programid',
			width : 270,
			hidden : true
		}, {
			header : "角色名称",
			dataIndex : 'rolename',
			width : 220,
			sortable : false
		}, {
			header : "查看",
			dataIndex : 'view',
			width : 50,
			xtype : 'checkcolumn'
		}, {
			header : "添加",
			dataIndex : 'add',
			width : 50,
			xtype : 'checkcolumn'
		}, {
			header : "修改",
			dataIndex : 'edit',
			width : 50,
			xtype : 'checkcolumn'
		}, {
			header : "删除",
			dataIndex : 'del',
			width : 50,
			xtype : 'checkcolumn'
		} ]
	}),
	tbar : new Ext.Toolbar({
		items : [ {
			text : "保存",
			handler : uf_save
		} ]
	})
});

var cpanel = new Ext.Panel({
	layout : "border",
	items : [ grid, pgrid ]
});
form.onload = function() {
	cpanel.render("center_div");
	this.parentPanel.add(cpanel);
	store.load({
		params : {
			start : 0,
			limit : 25
		}
	});
};
form.destroy = function() {
	store.destroy();
	pstore.destroy();
	grid.destroy();
	pgrid.destroy();
	cpanel.destroy();
};

function uf_save() {
	var buf = [];
	pstore.each(function(record, index, count) {
		buf[index] = record.data;
	});

	var msgbox = Ext.Msg.show({
		title : "保存",
		msg : "正在保存.........",
		closable : true,
		width : 300,
		modal : false,
		progress : true
	});
	var count = 0;
	var curnum = 0;
	var msgtext = "";
	Ext.TaskMgr.start({
		run : function() {
			count++;
			if (count > 10) {
				msgbox.hide();
			}
			curnum = count / 10;
			msgtext = curnum * 100 + "%";
			msgbox.updateProgress(curnum, msgtext, '正在保存.........');
		},
		interval : 500
	});
	
	Ext.Ajax.request({
		url : form.contextpath + "/function/savePermission.do",
		params : {
			json : JSON.stringify(buf)
		},
		success : function(response, opt) {
			pstore.each(function(record, index, count) {
				record.commit();
			});
			msgbox.hide();
		},
		failure : function(rps, opt) {
			msgbox.hide();
		}
	});
}

